1、将字符串中的空格替换为%20
思想：一个个遍历 ，遇到空格  就将其换为%20
class Solution {
public:
    string replaceSpace(string s) {
        string s1;
        if(s.empty())
            return s1;
        for(auto e:s)
        {
            if(e==' ')
            { 
                
                s1+="%20";
            }
            else
            {
                s1.push_back(e);
            }
        }
        return s1;
    }
};

2、将字符串 转为数字
思想：
第一步：找个不为第一个不为空格的字符
第二步:判断第一个字符是否符合规则
第三步：遍历字符串  
有几点需要注意：求和  应该将上一次结果乘10 ，因为多了一个树，也就是将原来的位都向左移动了一位一样。
求和的num  应该设为long  不能设为int   因为有可能  num前一次不大于2^31-1，乘10以后就大于了  这样会出错，所以需要设为long型
class Solution {
public:
    int strToInt(string str) {
        if(str.empty())
            return 0;
        int max=pow(2,31)-1;
        int min=-pow(2,31);
        int i=0;
        long num=0;
        //找到第一个不为空格的字符
        while(i<str.size()&&str[i]==' ')
            i++;
        //第一个字符如果为字母 则退出
        if(str[i]>='a'&&str[i]<='z')
            return num;
        int flag=1;
        //判断第一个字符是+还是-
        if(str[i]=='-')
        {
            flag=-1;
            i++;
        }
        else if(str[i]=='+')
        {
            i++;
        }
        //开始循环下面的字符串
        while(i<str.size())
        {
            //求有效字符的值的和
            if(str[i]>='0'&&str[i]<='9')
            {
                num=num * 10+flag * (str[i]-'0');  
                
                if(num>=max)
                    return max;
                else if(num<=min)
                    return min;
            }
            else
            {
                return num;
            }
            i++;
        }
        return num;
    }
};
3、反转链表的最小值，就是有个递增的一串数，但是反转了，找到反转后的最小值
思想：因为看见了递增 就应该想到二分查找
找出mid  如果mid的值 比right的值小，意味着mid以后一定是递增的，最小值必不在右边
如果mid的值比right的值小，意味着最小值必定在右边
class Solution {
public:
    int minArray(vector<int>& numbers) {
        int l=0;
        int r=numbers.size()-1;
        while(l<r)
        {
            int mid=(l+r)/2;
            //如果中间小于最右边的，那么一定右边一定是递增的，也就是旋转的最小部分在左边
            if(numbers[r]>numbers[mid])
            {
                r=mid;
            }
            //如果有右边比中间小，说明旋转的最小部分在右边
            else if(numbers[r]<numbers[mid])
            {
                l=mid+1;
            }
            else
            {
                r--;
            }
        }
        return numbers[l];
    }
};